﻿using System;
using System.Collections.Generic;
using System.Text;

using ECCIT;
using OgilvyOne.UKNow.Model;
using OgilvyOne.UKNow.Utility;

namespace OgilvyOne.UKNow.IDAL
{
    public interface IDALEventsComment
    {
        #region 获取数据接口
        /// <summary>
        ///     根据活动评论ID获取活动评论对象
        /// </summary>
        /// <param name="id">活动评论ID</param>
        /// <returns>如果存在，返回NewsModel，如果不存在，返回null</returns>
        EventsCommentModel GetEventsCommentModelByID(int? id);
        
        /// <summary>
        ///     根据活动id获取活动评论数据，默认根据评论发布时间正排序
        /// </summary>
        /// <returns></returns>
        IList<EventsCommentModel> GetEventsCommentModelsByEventsID(int? eventID);

        int GetTotalCountByEventsID(int? eventsID);

        int GetTotalCountByUsereID(int? userID);

         //mff
        /*修改人：穆凤凤
        * 修改时间：2012-04-18
        * 修改内容：
        *      新增接口 获得按用户ID,获得活动评论数据的接口 GetEventCommentByUserID,(用于接口)
        *      有mff注释的为本次修改的代码
        */

        IList<EventsCommentModel> GetEventCommentByUserID(int? userID);//mff

        List<EventComment> getModel(int? langID, int? userID, int CurrentPageIndex, int PageSize);

        PagingList GetEventsCommentsWithImageByUserID(int? userID, PagingParameter pagingParams);
        #endregion

        #region 操作数据接口
        /// <summary>
        ///     保存活动评论数据
        /// </summary>
        /// <param name="modelInfo">活动评论数据对象</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取保存是否成功
        ///     如果ResultInfo.Result为true，可以通过ResultInfo.ReturnedObject获取modelInfo
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Save(EventsCommentModel modelInfo);
        
        /// <summary>
        ///     根据活动评论数据ID列表删除活动评论数据
        /// </summary>
        /// <param name="idList">活动评论ID列表</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取删除是否成功
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Delete(IList<int?> idList);

        /// <summary>
        ///     获取某个作品的所有已发布评论数据，默认根据最后修改时间倒排序
        /// </summary>
        /// <param name="warmupID">作品id</param>
        /// <param name="pagingParams">分页和排序参数</param>
        /// <returns></returns>
        PagingList GetPublishedCommentsByEventsID(int? EventsID, PagingParameter pagingParams);

        /// <summary>
        /// 根据用户ID获取该用户的评论数据
        /// </summary>
        /// <param name="memberID">用户ID</param>
        /// <param name="pagingParams">分页参数</param>
        /// <returns>返回 PagingList</returns>
        PagingList GetEventCommentsByMemberID(int? memberID, PagingParameter pagingParams);


        /// <summary>
        /// 删除评论信息 只更新内容
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ResultInfo Update(EventsCommentModel model);
        /// <summary>
        /// 获取所有评论
        /// </summary>
        /// <returns></returns>
        PagingList getALLMod(PagingParameter pagingParams, int? userID);

        PagingList GetEventsCommentModelsByEventsID(int? eventsID, PagingParameter pagingParams);
        #endregion
    }
}
